var ua = navigator.userAgent
var browser = {
    isMobile: /AppleWebKit.*Mobile.*/i.test(ua),
    isWeixin: /MicroMessenger/i.test(ua),
    isAndroid: /Android|Adr/i.test(ua),
    isIOS: /\(i[^;]+;( U;)? CPU.+Mac OS X/i.test(ua),
    isMQQBrowser: /MQQBrowser/i.test(ua)
}
var appLinks = {
    "qutanlu": {
        yingyongbao: 'http://a.app.qq.com/o/simple.jsp?pkgname=com.qutanlu.market',
        ios: 'https://itunes.apple.com/cn/app/id1466019655?mt=8',
        iosSchema: 'qutanlu://',
        android: 'http://yun.lingxs.com/app/apk/qutanlu-release.apk',
        androidSchema: 'qutanlu://jump'
    }
}
var defaults = {
    type: '', // app名称
    links: {} // 合并links中的链接到appLinks[type]
}
var _download = {
    showTip: function () { // 打开提示图片
        var tip = document.getElementById('download__tip')
        if (tip) {
            tip.style.display = 'block'
        } else {
            tip = createElem('div', {
                id: 'download__tip',
                style: 'position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.8);z-index:99999;'
            })
            var img = createElem('img', {
                src: 'https://yun.linkwinning.com/share-weixin.png',
                style: 'width:94%;margin:10px 3% 0;'
            })
            tip.appendChild(img)
            tip.style.display = 'block'
            tip.onclick = function () {
                this.style.display = 'none'
            }
            document.body.appendChild(tip, 'qutanlu')
        }
    },
    hideTip: function () { // 隐藏提示图片
        var tip = document.getElementById('download__tip')
        if (tip) {
            tip.style.display = 'none'
        }
        
    },
    schema2Url: function (schema, url) { // 协议尝试打开app，然后跳转下载链接
        var loadDateTime = new Date()
        setTimeout(function () {
            var timeOutDateTime = new Date()
            if (timeOutDateTime - loadDateTime < 5000) {
                redirect(url)
            }
        }, 25)
        redirect(schema)
    },
    judge: function (opts) { // ios优先跳转app store，其他优先使用应用宝
        var self = this
        var options = merge(defaults, opts)
        if (appLinks[options.type]) { // app存在
            var curApp = appLinks[options.type]
            if (!isEmptyObj(options.links)) { // 更改原始链接
                curApp = merge(curApp, options.links)
            }
            if (browser.isIOS) { // IOS系统
                self.schema2Url(curApp.iosSchema, curApp.ios) // 尝试打开app后跳转app store
            } else { // 非ios系统，优先使用应用宝
                /*if (browser.isMobile) { // 移动端
                    if (browser.isWeixin) { // 微信
                        if (curApp.yingyongbao) { // 有应用宝
                            redirect(curApp.yingyongbao); // 跳转应用宝
                        } else { // 提示从浏览器中打开
                            self.showTip();
                        }
                    } else { // 非微信
                        if (browser.isMQQBrowser && curApp.yingyongbao) { // qq浏览器中应用宝可打开app
                            redirect(curApp.yingyongbao); // 跳转应用宝
                        } else { // 尝试打开app后下载apk
                            self.schema2Url(curApp.androidSchema, curApp.android);
                        }
                    }
                } else { // PC端
                    if (curApp.yingyongbao) { // 有应用宝
                        redirect(curApp.yingyongbao);
                    } else { // 
                        redirect(curApp.android);
                    }
                }*/
                
                if (browser.isMobile) { // 移动端
                    if (browser.isWeixin) { // 微信
                        window.location.href = "https://yun.linkwinning.com/download/down-v1.html"
                    } else { // 非微信
                        self.schema2Url(curApp.androidSchema, curApp.android)
                    }
                } else { // PC端
                    if (curApp.yingyongbao) { // 有应用宝
                        redirect(curApp.yingyongbao)
                    } else { //
                        redirect(curApp.android)
                    }
                }
            }
        }
    }
}

function redirect(url) {
    window.location.href = url
}

function createElem(node, options) {// 创建dom元素
    var dom = document.createElement(node)
    for (var p in options) {
        if (p == 'style') {
            dom['style'].cssText = options[p]
        } else {
            dom[p] = options[p]
        }
    }
    return dom
}

function isEmptyObj(obj) { // 是否空对象
    for (var p in obj) {
        return false
    }
    return true
}

function merge(target) { // 合并对象，返回target
    for (var i = 0, j = arguments.length; i < j; i++) {
        var source = arguments[i] || {}
        
        for (var prop in source) {
            if (source.hasOwnProperty(prop)) {
                var value = source[prop]
                if (value !== undefined) {
                    target[prop] = value
                }
            }
        }
    }
    return target
}

module.exports = _download
